<?php
namespace app\index\controller;
use think\Controller;
use think\Db;
// use app\validate\User;//用户自定义的控制器
use app\facade\User;//app\validate\User的静态代理

// use think\Validate;//常规调用方法
use think\facade\Validate;//静态代理，调用默认创建好的Validate
class Demo9 extends Controller
{
	// 1验证器：使用是validate类中的rule属性
	public function test1(){
		// 要验证是数据
		$data=[
		'name'=>'xianq',
		'email'=>'perer@php.cn',
		'password'=>'123bf333d',
		'mobile'=>'13426827071'
		];
		// 验证器是一个类，实例化调用
		// $validate=new User;
		// if(!$validate->check($data)){
		// 	return $validate->getError();
		// }
		// return '验证通过';

		// 使用当前验证器的静态代理
		
		if(!User::check($data)){
			return User::getError();
		}
		return '验证通过';
		
 	}

 	// 1-1、调用控制器中的validate方法进行验证：使用用户自定义的验证器/类
 	public function test2()
 	{
 		// 要验证是数据
 		$data=[
		'name'=>'xianq',
		'email'=>'perer@php.cn',
		'password'=>'123bf333d',
		'mobile'=>'13426827071'
		];
		// 验证规则
		$validate='app\validate\User';
		$res=$this->validate($data,$validate);
		if(true !==$res){
			return $res;
		}
		return '验证通过';
		// 验证器总结
		// 1、验证器是一个自定义的类，必须继承于框架的验证类think\Validate.php
		// 2、验证器可以创建在应用application目录下的任何一个可以访问的目录下面
		// 3、验证器其实就是完成框架的think\Validate类中的属性protected $rule=[]初始化
		// 4、在控制器中直接实例化调用check()完成验证，或创建一个自定义的静态代理，来统一验证方法来调用方式

 	}

 	// 2、独立验证：使用的是验证器类think\Validate中的rule()方法
 	// rule()方法实际上就是完成给当前类的protected $rule=[]初始化
 	public function test3()
 	{
 		// 创建验证规则
 		$rule=[
			'name|姓名'=>[
				'require',
				'min'=>5,
				'max'=>20
				],
			'email|邮箱'=>[
				'require',
				'email'=>'email'
				],
			'password|密码'=>[
				'require',
				'min'=>3,
				'max'=>12,
				'alphaNum'
				],
			'mobile|手机'=>[
				'require',
				'mobile'
				],
			];
		// 添加字段的验证规则：初始化rule属性
 		Validate::rule($rule);
 		// 要验证是数据
 		$data=[
		'name'=>'xianq',
		'email'=>'perer@php.cn',
		'password'=>'123bf333d',
		'mobile'=>'13426827071'
		];
		// 如果验证不通过，直接输出错误
		if(!Validate::check($data)){
			return Validate::getError();
		}
		return '验证通过';
 		

 	}
 	


}